package controllers.GestionTratamientoDatos.Metodos.Verificacion;

import controllers.GestionTratamientoDatos.Metodos.MetodosTratamientoDatos;

import models.Hidregistro;
import java.util.List;
import java.util.ArrayList;

/**
 * Created with IntelliJ IDEA.
 * User: Daniel
 * Date: 07/02/13
 * Time: 12:20 PM
 * To change this template use File | Settings | File Templates.
 */
public class MetodoVerificacionBase extends MetodosTratamientoDatos{

    public MetodoVerificacionBase(List<Hidregistro> serieEntrada) {
        super(serieEntrada);
    }

    public void Verificar()
    {

    }

    public void VerificarUltimoAnho()
    {

    }

    /**public ArrayList<ArrayList<Hidregistro>> ConvertirArregloMatriz(List<Hidregistro> serieEntrada, int numeroFilas)
    {
        int numeroColumnas = (int)(serieEntrada.size() / numeroFilas);

        ArrayList<ArrayList<Hidregistro>> matriz = new ArrayList<ArrayList<Hidregistro>>();

        for (int i = 0; i < serieEntrada.size(); i++)
        {
            ArrayList<Hidregistro> listaTemporal = new ArrayList<Hidregistro>();
            for (int j = 0; j < numeroColumnas; j++)
            {
                listaTemporal.add(serieEntrada.get(numeroColumnas*i + j));
            }
            matriz.add(listaTemporal);
        }

        return matriz;
    }*/

    public double[][] ConvertirArregloMatriz(double[] serieEntrada, int numeroColumnas)
    {
        int numeroElementosFilas = (int)(serieEntrada.length / numeroColumnas);
        //System.out.println("--" + numeroElementosFilas + " " + numeroColumnas);
        double[][] matriz = new double[numeroElementosFilas][numeroColumnas];

        for (int i = 0; i < numeroElementosFilas; i++)
        {
            for (int j = 0; j < numeroColumnas; j++)
            {
                matriz[i][j] = serieEntrada[numeroColumnas * i + j];
                //System.out.print(matriz[i][j] + " ");
            }
            //System.out.println(" ");
        }

        return matriz;
    }

    public double[][] ConvertirListaMatriz(List<Hidregistro> serieEntrada, int numeroColumnas)
    {
        int numeroFilas = (int)(serieEntrada.size() / numeroColumnas);
        double [][]matriz = new double[numeroFilas][numeroColumnas];

        for (int i = 0; i < numeroFilas; i++)
        {
            for (int j = 0; j < numeroColumnas; j++)
            {
                matriz[i][j] = serieEntrada.get(numeroColumnas * i + j).getRegval();
            }
        }

        return matriz;
    }

    public ArrayList<Hidregistro> ConvertirMatrizArreglo(ArrayList<ArrayList<Hidregistro>> matriz)
    {
        ArrayList<Hidregistro> arregloSalida = new ArrayList<Hidregistro>();

        for (int i = 0; i < matriz.size(); i++)
        {
            for (int j = 0; j < matriz.get(i).size(); j++)
            {
                arregloSalida.add(matriz.get(i).get(j));
            }
        }
        return arregloSalida;
    }

    public double[] ConvertirMatrizArreglo(double[][] matriz)
    {
        double[] arregloSalida = new double[matriz.length * matriz[0].length];

        for (int i = 0; i < matriz.length; i++)
        {
            for (int j = 0; j < matriz[i].length; j++)
            {
                arregloSalida[i * matriz[i].length + j] = matriz[i][j];
            }
        }
        return arregloSalida;
    }

    public double[] CompletarArreglo(double []arreglo, int numeroElementos)
    {
        double []arregloSalida = new double[arreglo.length + 2 * numeroElementos];

        for (int i = 0; i < numeroElementos; i++)
        {
            arregloSalida[i] = arreglo[arreglo.length - numeroElementos + i];
            //System.out.print(arregloSalida[i] + " ");
        }

        for (int i = 0; i < arreglo.length; i++)
        {
            arregloSalida[i + numeroElementos] = arreglo[i];
            //System.out.print(arregloSalida[i + numeroElementos] + " ");
        }

        for (int i = arreglo.length + numeroElementos; i < arregloSalida.length; i++)
        {
            arregloSalida[i] = arreglo[i - arreglo.length - numeroElementos];
            //System.out.print(arregloSalida[i] + " ");
        }
        //System.out.println("");

        return arregloSalida;
    }

    public double[] CompletarArreglo(List<Hidregistro> arreglo, int numeroElementos)
    {
        double[] arregloSalida = new double[arreglo.size() + 2 * numeroElementos];

        for (int i = 0; i < numeroElementos; i++)
        {
            arregloSalida[i] = arreglo.get(arreglo.size() - numeroElementos + i).getRegval();
            //System.out.print(arregloSalida[i] + " ");
        }

        for (int i = 0; i < arreglo.size(); i++)
        {
            arregloSalida[i + numeroElementos] = arreglo.get(i).getRegval();
            //System.out.print(arregloSalida[i + numeroElementos] + " ");
        }

        for (int i = arreglo.size() + numeroElementos; i < arregloSalida.length; i++)
        {
            arregloSalida[i] = arreglo.get(i - arreglo.size() - numeroElementos).getRegval();
            //System.out.print(arregloSalida[i] + " ");
        }
        //System.out.println("");

        return arregloSalida;
    }
}
